/*
 * Copyright (C) 2013 Manuel Peinado
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.pla.lib.view.adapter;

import java.util.List;

import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;

import com.pla.lib.view.PLA_AdapterView;
import com.pla.lib.view.listener.EnterMultiChoiceListener;
import com.pla.lib.view.listener.ItemClickInActionModePolicy;

public interface MultiChoiceAdapter {

	void setAdapterView(PLA_AdapterView<? super ListAdapter> adapterView);

	void setAdapterView(AdapterView<? super BaseAdapter> adapterView);

	void setOnItemClickListener(OnItemClickListener listener);

	void setOnItemLongClickListener(OnItemLongClickListener listener);

	void setPlaOnItemClickListener(com.pla.lib.view.PLA_AbsListView.OnItemClickListener listener);

	void setPlaOnItemLongClickListener(com.pla.lib.view.PLA_AbsListView.OnItemLongClickListener listener);

	void save(Bundle outState);

	void setItemChecked(Object position, boolean checked);

	List<Object> getCheckedItems();

	int getCheckedItemCount();

	boolean isChecked(Object position);

	void setItemClickInActionModePolicy(ItemClickInActionModePolicy policy);

	ItemClickInActionModePolicy getItemClickInActionModePolicy();

	void cancelAllSeleted();

	void registerMultiChoiceListener(EnterMultiChoiceListener listener);

	void removeCheckState(Object id);

	void setCheckedItems(List<? extends Object> items);
}
